<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<body>

</body>
<script>
	// - 关于this
	// >  箭头函数没有自己的this，箭头函数内部的this并不是调用时候指向的对象,而是定义时指向的对象
	// {
	// 	// 普通函数中的this的指向是由调用时决定的。
	// 	// function fn(){
	// 	// 	console.log(this);
	// 	// }
	// 	// fn();// window
	// 	// fn.call({});// {}
	// 	//
	// 	// const obj = {
	// 	// 	fn,// 将函数的名字作为属性名，值即是该函数
	// 	// }
	// 	// obj.fn();// obj
	//
	// 	// const obj = {
	// 	// 	run:function(){
	// 	// 		console.log("run",this,this===obj);
	// 	// 	}
	// 	// }
	// 	// obj.run();// obj
	// 	// const run = obj.run;
	// 	// run();
	//
	// 	// 箭头函数中没有自己的this,this的指向由定义时决定。
	// 	// let obj = {
	// 	// 	// 普通定义
	// 	// 	fn:function(){
	// 	// 		console.log("fn",this);
	// 	// 	},
	// 	// 	// es6简写
	// 	// 	fn2(){
	// 	// 		console.log("fn2",this);
	// 	// 	},
	// 	// 	fn3:()=>{
	// 	// 		console.log("fn3",this);
	// 	// 	}
	// 	// }
	// 	// obj.fn();
	// 	// obj.fn2();
	// 	// obj.fn3();
	//
	//
	// 	let obj = {
	// 		fn:()=>{
	// 			// return function(){
	// 			// 	console.log(this);// window
	// 			// }
	//
	// 			return ()=>{
	// 				console.log(this,this===obj);// true
	// 			}
	// 		}
	// 	}
	// 	// obj.fn()();
	// 	const fn2 = obj.fn();
	// 	fn2();
	// }
	
	// - 箭头函数不能用于构造函数，也就是不能使用new关键字调用
	// {
	// 	function Box(){
	//
	// 	}
	//
	// 	console.log(Box.prototype.constructor);
	//
	// 	const Desk = ()=>{
	//
	// 	}
	// 	console.log(Desk.prototype);// undefined
	// 	new Desk();// TypeError: Desk is not a constructor
	// }
	
	// - 箭头函数没有arguments对象
	// {
	// 	// const fn = function(a,b,c){
	// 	// 	console.log(arguments);
	// 	// }
	// 	// fn(1,2,3);
	//
	// 	const fn = (a,b,c)=>{
	// 		console.log(arguments);// ReferenceError: arguments is not defined
	// 	}
	// 	fn(1,2,3);
	// }
	
	// - call apply bind在箭头函数中不起作用。
	// {
	// 	// const fn = function(){
	// 	// 	console.log(this);
	// 	// }
	// 	// fn.call(1);
	//
	// 	const fn = ()=>{
	// 		console.log(this);// window
	// 	}
	// 	fn.call({});
	// }
</script>
</html>